﻿using System;
using System.Text;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace Helpers
{
    /// <summary>
    /// Deze helper klasse rendered een anchor link (<a>)
    /// zoals een normale @Html.ActionLink dit zou doen.
    /// Het class="selected" HTML-attribuut wordt toegevoegd aan
    /// een link, wanneer de deze overeenkomt met de huidige
    /// controller en actie.
    /// 
    /// Deze helper wordt in de _Layout.cshtml partial View 
    /// gebruikt voor de menu-items bovenaan iedere pagina.
    /// </summary>
    public static class MenuItemHelper
    {
        public static MvcHtmlString MenuItem(this HtmlHelper htmlHelper, string linkTekst, string actieNaam, string controllerNaam)
        {
            //haal de huidige controller en de huidige actie van deze controller op
            string huidigeActie = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
            string huidigeController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
            //als de actie en controller dezelfde zijn als de link waarop geklikt is, voeg class="selected" toe aan de link
            if (actieNaam == huidigeActie && controllerNaam == huidigeController)
            {
                return htmlHelper.ActionLink(
                    linkTekst,
                    actieNaam,
                    controllerNaam,
                    null,
                    new
                    {
                        @class = "selected"
                    });
            }
            //Voor alle andere links waar niet op geklikt is, gebruiken we een gewone actionlink zoals we dat normaal zouden doen
            return htmlHelper.ActionLink(linkTekst, actieNaam, controllerNaam);
        }

    }
}
